package com.ipartek.pruebas.capitulo8;

import com.ipartek.pruebas.bean.AlumnoP1;
import com.ipartek.pruebas.excepciones.ExcepcionAlumnoP1;

/**
 * Clase para probar el funcionamiento del paso de parametros por referencia y
 * valor
 * 
 * @author practicas9
 * 
 */
public class PruebaMetodosP9 {

	/**
	 * Metodo para el ejemplo de "paso por valor", el cual muestra por pantalla
	 * el parametro
	 * 
	 * @param args
	 */
	static void incrementarValor(int valor) {
		System.out.println(valor++);
	}

	static void incrementarReferencia(AlumnoP1 alumno) {

		try {
			int edad = alumno.getEdad();
			alumno.setEdad(edad++);
			System.out.println((alumno.getEdad()));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		int edad=17;
		System.out.println("Nos debe mostrar la edad de " + edad + "= " + edad);
		incrementarValor (edad);
		System.out.println("Nos debe mostrar la edad de " + edad + "= " + edad);
		
		try{
		AlumnoP1 p = new  AlumnoP1("", "", "", "", 17, 0);
		System.out.println(p.toString());
		incrementarReferencia(p);
		System.out.println(p.toString());
		
		//Vamos a probar una variable intermedia para la instancia <AlumnoP1>p
		AlumnoP1 p2 = p;
		incrementarReferencia (p);
		System.out.println(p2.toString());
		
		//Vamos a clonar el objeto para que no nos cambie el valor
		p.clone();
		System.out.println(p.toString());
		}catch(ExcepcionAlumnoP1 e){
			e.printStackTrace();
		}
	}
}
